﻿using System;
using System.Linq;

namespace _125_select子句返回的内容_LINQ语法
{
    class Program
    {
        static void Main(string[] args)
        {
            DateTime[] 日期时间数组 =
            {
                new DateTime(2016,6,12),
                new DateTime(2016,4,13),
                new DateTime(2001,9,21)
            };

            //使用linq查询数组的日期，并以短日期字符串的形式返回
            var 结果之一 = from d in 日期时间数组
                       select d.ToShortDateString();
            foreach (var item in 结果之一)
            {
                Console.WriteLine($"返回字符串：\n\"{item}\"");
            }

            //第二种方法
            Person[] 数组二 =
             {
                new Person{ID=1,Name="老胡",Age=23},
                new Person{ID=2,Name="老经",Age=43},
                new Person{ID=3,Name="老xt",Age=25},
                new Person{ID=4,Name="大赵",Age=25},
                new Person{ID=5,Name="小李",Age=87},
            };
            Console.WriteLine($"\n\n返回类型为匿名类型：");

            var 结果之二 = from p in 数组二
                       select new
                       {
                           PersonID = p.ID,
                           PersonName = p.Name
                       };
            foreach (var i in 结果之二)
            {
                Console.WriteLine($"个人标识：{i.PersonID},称呼：{i.PersonName}");
            }

            Console.WriteLine("\n返回类型为元组:\n");
            string 数组三 = "abcdefg";
            var 结果之三= from c in 数组三
                      let index=数组三.IndexOf(c)
                      select(Index:index,Char:c);
            foreach (var dd in 结果之三)
            {
                Console.WriteLine($"{dd.Index}-{dd.Char}");
            }










        }
    }

    public class Person
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
    }
}
